#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QUdpSocket>
#include <QElapsedTimer>
#include <QTimer>
#include <QHostAddress>
#include <QSettings>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = NULL);
    ~MainWindow();

private slots:
    // UI 按钮槽函数
    void onConnectClicked();
    void onDisconnectClicked();
    void onStartStreamClicked();
    void onStopStreamClicked();
    void onCaptureClicked();
    void onServerSaveLocationClicked();
    void onClientSaveLocationClicked();


    // UDP 数据处理
    void readPendingDatagrams();

    // 状态更新
    void updateFrameRateDisplay();
    void updateConnectionStatus();

private:
    Ui::MainWindow *ui;
    QUdpSocket *udpSocket;

    // 帧率计算相关
    QElapsedTimer frameRateTimer;  // 测量帧率的时间间隔
    int frameCount;                // 累计帧数
    double frameRate;               // 当前计算的帧率
    QTimer *fpsUpdateTimer;         // 帧率显示更新定时器

    // 网络连接相关
    QHostAddress serverAddress;     // 服务器IP地址
    quint16 serverPort;             // 服务器端口号
    QString serverPhotoSavePath;          // 服务器照片保存路径
    QString clientPhotoSavePath;          //客户端照片保存路径

    // 状态标志
    bool isConnected;
    bool isStreaming;

    // 网络操作
    void connectToServer();
    void disconnectFromServer();
    void sendCommand(const QString &command);

    // 图片处理
    void savePhotoToLocal(const QImage &image);

    // 工具函数
    void logMessage(const QString &message);
    void loadSettings();
    void saveSettings();
};

#endif // MAINWINDOW_H
